//
//  JCCompListViewController.swift
//  JCNewsForMac
//
//  Created by ifly on 13/7/18.
//  Copyright © 2018年 Ismail. All rights reserved.
//

import Cocoa

class JCListWindowController: NSWindowController {
    override func windowDidLoad() {
        super.windowDidLoad()
    }
}


class JCListViewController: NSViewController {
    
    private var rootArray = ["企业认证处理","首页模块管理"]
    
    lazy var jcCollectionView: NSCollectionView = {   // 这里就是我们的NSCollectionView
        // 这里和UICollectionView中的设计一样，我们需要设定布局
        let flowLayout = NSCollectionViewFlowLayout.init()
        flowLayout.scrollDirection = .vertical  // 设置排列方式
        flowLayout.sectionInset = NSEdgeInsets.init(top: 16, left: 16, bottom: 16, right: 18)
        
        let collection = NSCollectionView.init()
        collection.collectionViewLayout = flowLayout    // 指定布局
        collection.isSelectable = true                  // item是否可以点击
        
        return collection
    }()
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do view setup here.
        
        setupSubviews()
        
    }
    
    func setupSubviews() -> Void {
        
        let rootScrView = NSScrollView.init(frame: self.view.bounds)
        view.addSubview(rootScrView)
        // 设置代理
        jcCollectionView.delegate = self
        jcCollectionView.dataSource = self
        jcCollectionView.register(JCCollectionViewItem.self, forItemWithIdentifier: NSUserInterfaceItemIdentifier(rawValue: "JCCollectionViewItem"))  // 注册Item 和NSCollectionView类似
        /**
         这里需要注意！！！
         scrollView是必要的，collectionView必须属于scrollView的子控件。否则
         func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem
         这个方法不会执行！
         */
        rootScrView.documentView = jcCollectionView
        
    }
    

    
}


extension JCListViewController: NSCollectionViewDataSource, NSCollectionViewDelegate {
    // 返回Item个数
    func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
        return rootArray.count
    }
    /**
     返回我们的Item。这里有一个注意点：
     NSCollectionViewItem是继承自NSViewController。而在NSViewController的初始化方法中，默认回去寻找同名的IB，和UIViewController不同的是，在没有IB的时候，我们直接使用NSViewController.init()是不会有任何问题的，因为loadView方法中会为我们创建默认的view。但是NSViewController则不会，如果我们不手动实现loadView方法自己设置view的话，view不会被创建。所以如果如果遇到控制台说nib找不到的时候，可以重点看看是不是哪个控制器的view没有赋值。
     */
    
    func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
        let item:JCCollectionViewItem = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "JCCollectionViewItem"), for: indexPath) as! JCCollectionViewItem
        
        item.view.wantsLayer = true
        item.view.layer?.backgroundColor = NSColor.red.cgColor
        
        item.jcTitle.stringValue = rootArray[indexPath.item]
    
        
        return item
    }
    // 点击方法
    func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
        print("items select",indexPaths)
        collectionView.deselectItems(at: indexPaths)
        
        let indexPath = indexPaths.first
        
        let storyboard = NSStoryboard.init(name: NSStoryboard.Name.init("Main"), bundle: nil)
        
        //            通过viewController 模态跳转
        if  indexPath?.item == 0{
            
            let vc:NSViewController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier.init("JCCamyListViewController")) as! NSViewController
            presentViewControllerAsModalWindow(vc)
        }
        
        if indexPath?.item == 1 {

            let vc:NSViewController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier.init("JCContentlistViewController")) as! NSViewController
            presentViewControllerAsModalWindow(vc)
            
        }
    }
    
   
}
// NSCollectionView的布局方法
extension JCListViewController: NSCollectionViewDelegateFlowLayout {
    // 返回Item的size
    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
        return NSSize.init(width: 200, height: 80)
    }
}






